﻿using ARC.YunXinShi.SMSService.Models;
using ARC.YunXinShi.SMSService.Models.SimpleSmsModels;

namespace ARC.YunXinShi.SMSService.Interfaces
{
    public interface ISimpleSms
    {
        /// <summary>
        /// 添加普通短信模板
        /// </summary>
        /// <param name="content">模板内容包含短信内容和签名。全文变量模板的变量用{**}代替，JSON变量模板的变量用源码中相应的变量参数代替。</param>
        /// <param name="type">1.验证码 2.通知 3.推广</param>
        /// <param name="title">模板标题名称用于备注查询[选填]</param>
        /// <param name="dataformat">1.全文变量模板 2.JSON变量模（不填写默认为全文变量模板）[选填]</param>
        /// <returns></returns>
        public AddAndDeleAndUpdateSimpleTelResponse AddSimpleTemplate(string content, string type, string title = "", string dataformat = "");
        /// <summary>
        /// 删除普通短信模板
        /// </summary>
        /// <param name="content">模板内容包含短信内容和签名。全文变量模板的变量用{**}代替，JSON变量模板的变量用源码中相应的变量参数代替。</param>
        /// <param name="type">1.验证码 2.通知 3.推广</param>
        /// <param name="delete">delete=1 删除指定模板ID模板</param>
        /// <returns></returns>
        public AddAndDeleAndUpdateSimpleTelResponse DeleteSimpleTemplate(string content, string type, string templateId, string delete);
        /// <summary>
        /// 修改普通短信模板
        /// </summary>
        /// <param name="content">模板内容</param>
        /// <param name="type">模板类型</param>
        /// <param name="templateid">模板修改id</param>
        /// <returns></returns>
        public AddAndDeleAndUpdateSimpleTelResponse
            UpdateSimpleTemplate(string content, string type, string templateid);
        /// <summary>
        /// 普通短信模板审核状态查询
        /// </summary>
        /// <param name="templateid">模板id</param>
        /// <returns></returns>
        public QuerySimpleTelResponse QuerySimpleTemplate(string templateid,string encode = "gbk");
        /// <summary>
        /// 取短信模板记录
        /// </summary>
        /// <param name="page">	可选项，默认1（第一页）</param>
        /// <param name="encode">可选项，默认接收数据是GBK编码,如提交的是UTF-8编码字符,需要添加参数 encode=utf8</param>
        /// <returns></returns>
        public QuerySimpleTemplateReCodeResponse QueryTemplateReCode(string page = "1", string encode = "");
        /// <summary>
        /// 发送短信
        /// </summary>
        /// <param name="mobile">短信接口同时发送给多个号码时,号码之间用英文半角逗号分隔(,);小灵通需加区号 如:13972827282,13072827282</param>
        /// <param name="content">JSON变量模板发送，传参规则{"key":"value"}JSON格式，key的名字须和申请模板中的变量名一致，多个变量之间以逗号隔开。示例：针对模板“短信验证码{$code}，您正在进行{$product}身份验证，请在10分钟内完成操作！”，传参时需传入{"code":"352333","product":"电商平台"}</param>
        /// <param name="template">	发送变量模板短信时需要填写对应的模板ID号，进入平台-》短信设置-》模板管理</param>
        /// <param name="time">可选项，格式：年月日时分，定时时间到分,共12个数字如定时到2032-10-01 12:01发 time = 203210011201 </param>
        /// <param name="mobileids">可选项该参数用于发送短信收取状态报告用，格式为消息编号+逗号；与接收号码一一对应，可以重复出现多次。消息编号:全部由数字组成接收状态报告的时候用到，该消息编号的格式可就为目标号码+当前时间戳整数，精确到毫秒，确保唯一性。供收取状态报告用 如: 1590049111112869461937;</param>
        /// <returns></returns>
        public BaseResponse SendSimple(string mobile, string template, string content="", string time = "", string mobileids = "");
        /// <summary>
        /// 全文变量模板发送
        /// </summary>
        /// <param name="mobile">短信接口同时发送给多个号码时,号码之间用英文半角逗号分隔(,);小灵通需加区号 如:13972827282,13072827282</param>
        /// <param name="content">发送内容需要进行URL字符标准化转码。{URL字符编码说明:返回字符串，此字符串中除了-_.之外的所有非字母数字字符都将被替换成百分号（%）后跟两位十六进制数，空格则编码为加号（+）}ASP：server.URLEncode("短信内容")PHP：urlencode("短信内容")JAVA：java.net.URLEncoder.encode("短信内容")</param>
        /// <param name="time">可选项，格式：年月日时分，定时时间到分,共12个数字如定时到2032-10-01 12:01发 time = 203210011201 </param>
        /// <returns></returns>
        public BaseResponse SendSimple(string mobile, string content, string time = "", string mobileids = "");
        /// <summary>
        /// 取已发送总条数
        /// </summary>
        /// <param name="cmd">取已发送条数</param>
        /// <returns></returns>
        public SendedSimpleResponse SendedSimpleCount(string cmd);
        /// <summary>
        /// 获取状态短信接口
        /// </summary>
        /// <returns></returns>
        public SendedSimpleStatusResponse SendedSimpleStatus();
    }
}
